package br.com.puertorico.model.querybuilder.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Define um elemento que tera o valor anexado ao fim da clausula where.
 *
 * @author daniel.camargo
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface WhereClause {

	/**
	 * @return Identificador do argumento
	 */
	String id();

	/**
	 * @return The value to be appended to the and of the where clause.
	 */
	String value();

	/**
	 * @return os ids das outras clausulas where de quem esta clausula depende.
	 */
	String[] dependsOn() default "";

	/**
	 * Definde se essa clausula sera inserida, independente de estar associada a
	 * um argumento
	 */
	boolean insertedByDefault() default false;

}
